package com.hanamaki.demo01;

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebDriver.Navigation;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.interactions.Actions;
import org.testng.annotations.AfterClass;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;

import java.net.MalformedURLException;
import java.net.URL;
import java.util.List;

/**
 * selenium 中八大 元素 的 定位 的方式
 */
public class FireFoxDriver01 {

    WebDriver driver;

    @BeforeClass
    public void setup() {
        System.setProperty("webdriver.gecko.driver", "C:\\Program Files\\Mozilla Firefox\\geckodriver.exe");
        driver = new FirefoxDriver();
    }

    /**
     * 测试  selenium中的  xpath   css  linkText  partialLinkText 元素定位
     * @throws InterruptedException
     */
    @Test
    public void test() throws InterruptedException {
        driver.get("file:///D:/SoftWare/apache-tomcat-9.0.56/webapps/testhtml/exam/index.html");
/**
 * xpath 的元素 定位
 */
        WebElement element = driver.findElement(By.xpath("//a[@href='House.html']"));
        element.click();

        Thread.sleep(3000);
//       实例化一个导航对象
        Navigation navigate = driver.navigate();
        navigate.back();
        Thread.sleep(3000);

/**
 * css  的元素 定位
 */
        WebElement element1 = driver.findElement(By.cssSelector("tr td a[href='House.html']"));
        element1.click();

/**
 * linkText 元素定位  根据页面中实际显示  文本值 来进行定位
 *  使用   linkText  一定是 精确搜索
 */
        Thread.sleep(3000);
        navigate.back();
        WebElement element2 = driver.findElement(By.linkText("继续提供房源信息"));
        Thread.sleep(3000);
        element2.click();
/**
 * partialLinkText  元素定位  根据页面中实际显示  文本值 来进行定位
 *  使用   partialLinkText   模糊搜索
 */
        Thread.sleep(3000);
        navigate.back();
        WebElement element3 = driver.findElement(By.partialLinkText("续提供房源信"));
        Thread.sleep(3000);
        element3.click();


    }


    @Test
    public void t2() {

        driver.get("file:///D:/SoftWare/apache-tomcat-9.0.56/webapps/testhtml/exam/House.html");

////        使用 xpath 的方式  来进行元素 定位
//        WebElement element = driver.findElement(By.xpath("//input[@class='uname']"));
////        再输入值的 时候  要保证 文本框 中的  数据史干净的
//        element.clear();
//        element.sendKeys("hanamaki");

        /* 通过 css 的方式 来进行元素 定位  */
//        WebElement element = driver.findElement(By.cssSelector("input.uname"));
//        element.clear();
//        element.sendKeys("andy");

//        /* 通过  by.name的方式来进行元素定位  */
//        WebElement username = driver.findElement(By.name("username"));
//        username.clear();
//        username.sendKeys("jojo");

        /**
         * 通过 by.className 的方式 来进行元素定位
         */
//        WebElement uname = driver.findElement(By.className("uname"));
//        uname.clear();
//        uname.sendKeys("yutou");

        /**
         * 通过 by.tagName 的方式来进行元素 定位
         */
//        List<WebElement> input = driver.findElements(By.tagName("input"));
//        input.get(0).clear();
//        input.get(0).sendKeys("jack");

        /*  通过 id 属性来进行元素 定位*/
        WebElement email = driver.findElement(By.id("email"));
        email.clear();
        email.sendKeys("123@qq.com");


//        使用  doubleClick 来进行双击的操作
        WebElement username = driver.findElement(By.name("username"));
        /* 实例化一个事件 */
        Actions actions = new Actions(driver);
        actions
                .doubleClick(username)
                .build()
                .perform();
    }

    @AfterClass
    public void close() {
//        driver.close();
    }


}
